Channel Encoding and Recording
In order to transmit digital data through a communication channel or to record such data in a storage media, such as an optical or magnetic disk, the digital data must first be converted to a time-continuous signal of limited bandwidth. For this purpose, a channel encoder converts (or "modulation encodes") the digital user data into a new sequence of ones and zeroes (called channel bits or channel data) which are constrained in the sense that there must be at least a minimum number of channel "zeroes" between channel "ones", and no more than a maximum number of "zeroes" between "ones". Such a constrained digital sequence is a run length limited (RLL) code. An RLL code can be represented by a sequence of integers (or run symbols) in which each run symbol is assigned a value equal to the number of channel zeroes between successive channel ones. The analog signal to be recorded is usually a pulse train, wherein the distance between adjacent leading and trailing pulse edges is determined by the number of zeroes between successive ones in the channel code. This is a pulse-length-modulated (PLM) waveform. Alternatively, the recorded signal could be a sequence of very short pulses, the spacing of which is determined by the number of zeroes between ones (i.e., a short pulse corresponds to every "one"). This alternative recording waveform is a pulse-position-modulated (PPM) waveform. PPM waveforms are widely used in optical recording while PLM is used in magnetic recording as well as optical recording. In order to retrieve the recorded data (or to receive transmitted data) which has been thus channel encoded, a channel decoder must be used to translate the channel encoded data back into its original digital form. An RLL channel code is characterized by two quantities, D (the minimum allowable number of zeroes between successive ones) and K (the maximum allowable number of zeroes between successive ones). In disk recording, D is constrained by the resolution, or the minimum spot size that can recorded and read back on the disk media, while K is constrained by the ability of the channel decoder electronics to maintain synchronization and phase lock with the recorded channel bits.
The user digital data to be transformed by the channel encoder prior to recording, typically, has been previously encoded in accordance with an error correction code. This requires that the user information data be partitioned into blocks which include additional redundant data computed from the user information data in accordance with the error correction code. Upon playback of the recorded data (or upon reception of transmitted data) and after channel decoding, an error correction decoder uses the redundant data to locate and remove errors in the playback (or received) user data. Significantly, the error correction coding is done on the user data before such data is channel encoded into channel data, and the error correction decoding is done on received user data obtained by channel decoding the received channel data. Thus, conventional error correction techniques operate on the user data, that is, it operates "outside" the channel code.
The additional redundant bytes of data used for the "outside" error correction purpose is an overhead or burden on the overall system because it, in effect, slows down the rate at which user information may be recorded and played back (or transmitted and received), since no user information data may be recorded while the additional redundant data are being recorded. The more errors that the "outside" error correction code may correct, the greater the overhead or number of redundant data bits. Thus, a tradeoff is always presented to a system designer between the density and rate at which user information may be recorded or transmitted and the capacity of the error correction code.